home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / happysrc / pcset.c < prev    next >
Text File  |  1993-11-30  |  1KB  |  57 lines

  1. /************************************************
  2.  *
  3.  *  *** HAPPy Pascal  compiler ***
  4.  *     set operation routine 
  5.  *
  6.  *     Copyright (c) H.Asano 1992
  7.  ************************************************/
  8. #define EXTERN extern
  9. #include <stdarg.h>
  10. #include "pascomp.h"
  11.          
  12. static va_list marker ;
  13.  
  14. /****************************************/
  15. /*  mkset(s,i,j,k,...,-1) :             */
  16. /*       要素i,j,k...を持つ集合sの作成  */
  17. /*          引数は-1で最後とする        */
  18. /****************************************/
  19. Set *mkset(Set *s,int first,...)
  20. {
  21.   int i=first ;
  22.  
  23.      s->H=0;
  24.      s->L=0;
  25.      va_start(marker,first) ;
  26.      while(i != -1) {
  27.       addset((*s),i) ;
  28.       i = va_arg(marker,int) ;
  29.      }
  30.      return(s) ;
  31. }
  32.  
  33. /****************************************/
  34. /*  orset(s1,s2) :  s1 = s1とs2和集合   */
  35. /****************************************/
  36. Set *orset(Set *s1,Set *s2)
  37. {
  38.     s1->H |= s2->H ;
  39.     s1->L |= s2->L ;
  40.     return(s1) ;
  41. }
  42.  
  43. /****************************************/
  44. /*  dfset(s1,s2) :  s1 = s1とs2の差集合 */
  45. /****************************************/
  46. Set *dfset(Set *s1,Set *s2)
  47. {
  48.      /* 0-0 -> 0 */
  49.      /* 0-1 -> 0 */
  50.      /* 1-0 -> 1 */
  51.      /* 1-1 -> 0 */
  52.                     
  53.      s1->H &= (s1->H ^ s2->H) ;
  54.      s1->L &= (s1->L ^ s2->L) ;
  55.      return(s1) ;
  56. }
  57.